package com.yaj.mesif.service.impl;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.yaj.mesif.dto.ErrTiItemDto;
import com.yaj.mesif.dto.TiItemDto;
import com.yaj.mesif.entity.TiItem;
import com.yaj.mesif.mapper.TiItemMapper;
import com.yaj.mesif.service.TiItemService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yaj.mesif.unil.ErrorCodeEnum;
import com.yaj.mesif.unil.RespBean;
import com.yaj.mesif.unil.SucessCodeEnum;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author wei
 * @since 2021-08-18
 */
@Service
public class TiItemServiceImpl extends ServiceImpl<TiItemMapper, TiItem> implements TiItemService {
    @Resource
    private TiItemMapper tiItemMapper;

    @Override
    public RespBean RegTiItem(List<TiItemDto> tiItemDtos) {
        boolean resultFlg = true;
        List<ErrTiItemDto> errTiItemDtos = new ArrayList<ErrTiItemDto>();

        for(TiItemDto tiItemDto :tiItemDtos){
            try{
                TiItem tiItem = new TiItem();
                BeanUtil.copyProperties(tiItemDto,tiItem);
                //更新条件
                UpdateWrapper<TiItem> tiItemUpdateWrapper = new UpdateWrapper<TiItem>();
                //営業単位コード
                tiItemUpdateWrapper.eq("OPERATING_UNIT_CODE",tiItem.getOperatingUnitCode())
                                    .eq("ORGANIZATION_CODE",tiItem.getOrganizationCode())
                                    .eq("SEGMENT1",tiItem.getSegment1());

                //this.saveOrUpdate(tiItem,tiItemUpdateWrapper);
                QueryWrapper<TiItem> tiItemQueryWrapper = new QueryWrapper<TiItem>();
                tiItemQueryWrapper.eq("OPERATING_UNIT_CODE",tiItem.getOperatingUnitCode())
                                    .eq("ORGANIZATION_CODE",tiItem.getOrganizationCode())
                                    .eq("SEGMENT1",tiItem.getSegment1());

                TiItem result = tiItemMapper.selectOne(tiItemQueryWrapper);

                if(ObjectUtil.isNull(result)){
                    tiItemMapper.insert(tiItem);
                }else{
                    tiItemMapper.update(tiItem,tiItemUpdateWrapper);
                }

            }catch (Exception e) {
                resultFlg = false;
                ErrTiItemDto errTiItemDto = new ErrTiItemDto();
                errTiItemDto.setTiItemDto(tiItemDto);
                errTiItemDto.setErrorMessage(e.getMessage());
                errTiItemDtos.add(errTiItemDto);
            }
        }

        if(!resultFlg){
            log.error(errTiItemDtos.toString());
            return RespBean.error(ErrorCodeEnum.插入记录失败.getCode(), ErrorCodeEnum.插入记录失败.getMsg(),errTiItemDtos);
        }

        return RespBean.success(SucessCodeEnum.插入记录成功.getCode(),SucessCodeEnum.插入记录成功.getMsg());
    }
}
